package com.up.vms.application.common.utils;

import com.up.vms.application.base.utils.NumberUtils;
import com.up.vms.application.base.utils.StringUtils;

/**
 * 工会编号工具类
 */
public class UnionUtils {
    public static String ZONGGONGHUI_UNION_CODE = "0000000000";
    public static String JIA_SAI_DEV = ",13616881718,13023770720,17858955683,13015527848,";

    public static void main(String[] args) {
        System.out.println(ZONGGONGHUI_UNION_CODE.length());
        System.out.println(isFederationUnion("0000000c"));
        System.out.println(isJiaSai("13616881718"));
    }

    /**
     * 是否为总工会
     *
     * @param unionCode
     * @return
     */
    public static boolean isFederationUnion(String unionCode) {
        return StringUtils.isNotBlank(unionCode) && NumberUtils.str2Int(unionCode, -1) == 0;
    }

    /**
     * 判断是否是嘉赛开发人员
     *
     * @param phone
     * @return
     */
    public static boolean isJiaSai(String phone) {
        if (com.up.vms.application.common.utils.StringUtils.isNotEmpty(phone) && JIA_SAI_DEV.contains("," + phone + ",")) {
            return true;
        }
        return false;
    }

    /**
     * 总工会账号返回10个0
     * 非总工会返回原值
     *
     * @param unionNo
     * @return
     */
    public static String unionFormat(String unionNo) {
        boolean federationUnion = isFederationUnion(unionNo);
        if (federationUnion) {
            return "0000000000";
        } else {
            return unionNo;
        }
    }

    /**
     * 过滤长度小于10的，并且判断underUnionNo工会是否属于allHighUnionNo其中的一个
     *
     * @param underUnionNo
     * @param allHighUnionNo
     * @return
     */
    public static boolean isbelongLimitUnionBeforeFilter0(String underUnionNo, String[] allHighUnionNo) {

        for (int i = 0; i < allHighUnionNo.length; i++) {
            String highUnionNo = allHighUnionNo[i];
            if (highUnionNo.length() < 10) continue;    //过滤长度小于10 的工会（数据库unionLimit第一个是0）
            if (underUnionNo.equals(highUnionNo)) return true;
            boolean underAreaUnion = isUnderAreaUnion(underUnionNo, highUnionNo);
            if (underAreaUnion) return true;
        }
        return false;
    }

    /**
     * 判断“子工会”是否属于“高级工会”
     *
     * @param underUnionNo 子工会
     * @param highUnionNo  高级工会
     * @return
     */
    public static boolean isUnderAreaUnion(String underUnionNo, String highUnionNo) {

        if (underUnionNo.equals(highUnionNo)) return false;

        //工会前面的非0数字
        String underUnionNoNotZero = backSubUntilNotZero(underUnionNo);
        String highUnionNoNotZero = backSubUntilNotZero(highUnionNo);

        if (underUnionNoNotZero.contains(highUnionNoNotZero)) {
            return true;
        }
        return false;
    }

    /**
     * 倒着遍历，截取前面非0的部门，如果都是0，则返回0
     *
     * @param unionNo
     * @return
     */
    public static String backSubUntilNotZero(String unionNo) {
        String returnStr = "0";
        char[] chars = unionNo.toCharArray();
        int length = chars.length;
        while (length-- > 0) {
            if (chars[length] > '0') {
                returnStr = unionNo.substring(0, length + 1);
                break;
            }
        }
        return returnStr;
    }

}
